[project]
name = "arize-phoenix-evals"
description = "LLM Evaluations"
readme = "README.md"
requires-python = ">=3.8, <3.13"
license = "Elastic-2.0"
license-files = { paths = ["LICENSE", "IP_NOTICE"] }
keywords = [
  "Observability",
  "Monitoring",
  "Explainability",
]
authors = [
  { name = "Arize AI", email = "phoenix-devs@arize.com" },
]
classifiers = [
  "Programming Language :: Python",
  "Programming Language :: Python :: 3.8",
  "Programming Language :: Python :: 3.9",
  "Programming Language :: Python :: 3.10",
  "Programming Language :: Python :: 3.11",
  "Programming Language :: Python :: 3.12",
]
version = "0.3.0"
dependencies = [
  "pandas",
  "tqdm",
  "typing-extensions>=4.5, <5",
]

[project.optional-dependencies]
dev = [
  "anthropic>0.18.0",
  "boto3",
  "litellm>=1.28.9",
  "openai>=1.0.0",
  "vertexai",
]
test = [
  "openinference-semantic-conventions",
  "pandas",
  "tqdm",
  "typing-extensions>=4.5, <5",
  "anthropic>=0.18.0",
  "boto3",
  "litellm>=1.28.9",
  "openai>=1.0.0",
  "vertexai",
  "respx",
  "nest_asyncio",
  "pytest==7.4.4",
  "pytest-asyncio",
  "pandas-stubs<=2.0.2.230605",
  "types-tqdm",
]

[project.urls]
Documentation = "https://docs.arize.com/phoenix/"
Issues = "https://github.com/Arize-ai/phoenix/issues"
Source = "https://github.com/Arize-ai/phoenix"

[build-system]
requires = ["hatchling"]
build-backend = "hatchling.build"

[tool.hatch.build.targets.wheel]
packages = ["src/phoenix"]

[tool.hatch.build]
only-packages = true

[tool.hatch.envs.publish]
dependencies = [
  "check-wheel-contents",
  "twine",
]

[tool.hatch.envs.publish.scripts]
testpypi = [
  "check-wheel-contents dist/",
  "twine upload --verbose --repository testpypi dist/*",
]
pypi = [
  "check-wheel-contents dist/",
  "twine upload --verbose dist/*",
]

[tool.ruff]
exclude = [".git", "__pycache__", ".tox", "dist"]
extend-include = ["*.ipynb"]
line-length = 100
target-version = "py38"

[tool.ruff.lint]
ignore-init-module-imports = true
select = ["E", "F", "W", "I"]

[tool.ruff.lint.isort]
force-single-line = false

[tool.ruff.lint.per-file-ignores]
"*.ipynb" = ["E402", "E501"]

[tool.mypy]
explicit_package_bases = true
disallow_untyped_calls = true
disallow_untyped_defs = true
disallow_incomplete_defs  = true
strict = true
exclude = [
  "dist/",
  "tests/",
]

[[tool.mypy.overrides]]
module = [
  "litellm",
]
ignore_missing_imports = true
